package cn.pdx.elec.web.action;



import java.util.ArrayList;
import java.util.List;

import cn.pdx.elec.container.ServiceProvider;
import cn.pdx.elec.service.ElecRoleService;
import cn.pdx.elec.service.ElecSystemDDlService;
import cn.pdx.elec.service.ElecUserService;
import cn.pdx.elec.util.XmlObject;
import cn.pdx.elec.web.form.ElecRoleForm;
import cn.pdx.elec.web.form.ElecSystemDDlForm;
import cn.pdx.elec.web.form.ElecUserForm;

import com.opensymphony.xwork2.ModelDriven;

/**
 * implements ModelDriven<T>实现这个接口，泛型
 * ModelDriven<ElecUserForm>表示这个表单对象
 * @author 彭定旭
 *
 */
@SuppressWarnings("serial")
public class ElecRoleAction extends BaseAction implements  ModelDriven<ElecRoleForm>{
    
	/**
	 * 创建一个表单对象，对应页面的属性的对象
	 */
	private ElecRoleForm elecRoleForm=new ElecRoleForm();
	
	/**
	 * 使用方法调用ElecUserService.SERVICE_NAME 接口
	 */
	@SuppressWarnings("unused")
	private ElecRoleService elecRoleService=(ElecRoleService) ServiceProvider.getService(ElecRoleService.SERVICE_NAME);
	
	
	/**
	 * 调用elecSystemDDlService来处理数据字典
	 */
	@SuppressWarnings("unused")
	private ElecSystemDDlService elecSystemDDlService=(ElecSystemDDlService) ServiceProvider.getService(ElecSystemDDlService.SERVICE_NAME);
	
	public ElecRoleForm getModel() {
		
		return elecRoleForm;
	}
    
	
	/**
	 * @Name:home
	 * @Description:查询所有的角色类型（在数字字典中获取）
	 *              从Function.xml文件中查询系统所有的功能权限
	 * @author 彭定旭
	 * @version：v1.00（版本号）
	 * @Create Date:2013-4-13(创建日期)
	 * @parameters:无
	 * @return:String home 跳转到roleIndex.jsp
	 */
	public String home()
	{
		
		//获取所有的角色类型
		List<ElecSystemDDlForm> systemList=elecSystemDDlService.findElecSystemDDlListByKeyword("角色类型");
		
		request.setAttribute("systemList", systemList);
		
		//从Function.xml文件中获取权限集合
		List<XmlObject> xmlList=elecRoleService.readXml();
		
		request.setAttribute("xmlList", xmlList);
		
		return "home";
	}
	
	/**
	 * @Name:edit
	 * @Description:使用角色ID查询该角色下该有的权限，并与系统中所有的权限匹配
	 *              使用角色ID查询该角色下所有用户
	 * @author 彭定旭
	 * @version：v1.00（版本号）
	 * @Create Date:2013-4-15(创建日期)
	 * @parameters:无
	 * @return:String home 跳转到roleedit.jsp
	 */
	public String edit()
	{  
		//获取角色ID
		String roleID=elecRoleForm.getRole();
		
		//根据ID查询权限
		List<XmlObject> xmlList=elecRoleService.readEditXml(roleID);
		
		request.setAttribute("xmlList", xmlList);
		
		//查询用户集合
		List<ElecUserForm> userList=elecRoleService.findElecUserListByRoleID(roleID);
		
		request.setAttribute("userList", userList);
		
		return "edit";
	}
	
	/**
	 * @Name:save
	 * @Description:保存,保存角色与权限的关联表 
	 *                  保存角色与用户的关联表 
	 * @author 彭定旭
	 * @version：v1.00（版本号）
	 * @Create Date:2013-4-15(创建日期)
	 * @parameters:无
	 * @return:String save 重定向到roleIndex.jsp
	 */
	public String save()
	{
		
		elecRoleService.saveRole(elecRoleForm);
		
		return "save";
	}
}
